// src/composables/useEventBus.ts
import { onMounted, onUnmounted } from 'vue';
import emitter from '@/utils/eventBus';
import type { EventBusEvents } from '@/utils/eventBus';
/**
 * 用于监听事件并自动注册/销毁
 * @param eventName - 事件名称
 * @param handler - 事件处理函数
 */
export function useEventBus<K extends keyof EventBusEvents>(
	eventName: K,
	handler: (payload: EventBusEvents[K]) => void
) {
	onMounted(() => {
		emitter.on(eventName, handler);
	});

	onUnmounted(() => {
		emitter.off(eventName, handler);
	});
}

/**
 * 用于主动触发事件（可选）
 * @param eventName - 事件名称
 * @param payload - 事件参数
 */
export function emitEvent<K extends keyof EventBusEvents>(
	eventName: K,
	payload: EventBusEvents[K]
) {
	emitter.emit(eventName, payload);
}
